# 递归函数
# 和所有语言都会讲解的一样，递归也一样
# 递归有三个条件
# 1 函数有出口
# 2 函数自身调用
# 3 变量的条件改变

# 例子 求阶乘
def fact(n):
    if n == 1:  # 函数终止条件
        return 1
    return n * fact(n - 1)  # 自己调用自己 参数 修改 n - 1 参数的变化向 终止条件靠近


# 调用
print(fact(6))

# 注意：使用递归函数的优点是逻辑简单清晰，缺点是过深的调用会导致栈溢出
